我遇到了一个问题,我无法通过cout打印返回的对象.
我觉得很难描述所以我写了一个非常基本的程序来显示我的问题.
编译器在运算符<<中表示类型不匹配.
重载+返回一个Integer对象,但为什么不能打印?
"Test.cpp的"
#include#include "Integer.h" using namespace std; int main() { Integer int1(5); Integer int2(2); cout << (int1 + int2) << endl; // Here it fails cout << int2 << endl; // Works return 0; }
"Integer.cpp"
#include "Integer.h" Integer::Integer(int integer) { this->integer = integer; } int Integer::get_integer() return integer; } Integer Integer::operator +(Integer& integer) { return Integer(this->integer + integer.get_integer()); } ostream& operator<<(ostream& output, Integer& integer) { output << integer.get_integer(); return output; }
"Integer.h"
#includeusing namespace std; class Integer { private: int integer; public: Integer(int integer); int get_integer(); Integer operator+(Integer& integer); }; ostream& operator<<(ostream& output, Integer& integer);
提前致谢
将临时对象绑定到非const引用是非法的:
cout << (int1 + int2) << endl; // The result of the '+' is temporary object.
要更正,请将您的参数更改operator<<
为const Integer&
:
ostream& operator<<(ostream& output, const Integer& integer); //^^^^^